package com.mego.megoandroid.activitys;

import android.app.Application;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Typeface;

import com.mego.megoandroid.database.greendao.DaoMaster;
import com.mego.megoandroid.database.greendao.DaoSession;
import com.mego.megoandroid.database.manager.GreenDaoContext;

import org.xutils.BuildConfig;
import org.xutils.x;

import zuo.biao.library.util.ImageLoaderUtil;

public class AppContext extends Application {
    private DaoMaster.DevOpenHelper mHelper;
    private SQLiteDatabase db;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    public static AppContext instances;
    private Typeface iconfont;

    private static final String DATABASE_NAME = "megoandroid.db";

    @Override
    public void onCreate() {
        super.onCreate();
        instances = this;
        ImageLoaderUtil.init(instances);//加载图片到ImageView
        iconfont = Typeface.createFromAsset(getAssets(), "iconfont/iconfont.ttf");

        x.Ext.init(this);
//        x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
    }

    public static AppContext getInstances() {
        return instances;
    }

    public Typeface getIconfont() {
        return iconfont;
    }

    /**
     * 设置greenDao
     * 数据库路径： /BHCMapper/sqlite/greendao/megoandroid.db
     */
    public void setDatabase() {
        // 通过 DaoMaster 的内部类 DevOpenHelper，你可以得到一个便利的 SQLiteOpenHelper 对象。
        // 可能你已经注意到了，你并不需要去编写「CREATE TABLE」这样的 SQL 语句，因为 greenDAO 已经帮你做了。
        // 注意：默认的 DaoMaster.DevOpenHelper 会在数据库升级时，删除所有的表，意味着这将导致数据的丢失。
        // 所以，在正式的项目中，你还应该做一层封装，来实现数据库的安全升级。
        mHelper = new DaoMaster.DevOpenHelper(new GreenDaoContext(getApplicationContext()), DATABASE_NAME, null);
        db = mHelper.getWritableDatabase();
        // 注意：该数据库连接属于 DaoMaster，所以多个 Session 指的是相同的数据库连接。
        mDaoMaster = new DaoMaster(db);
        mDaoSession = mDaoMaster.newSession();
    }

    public DaoSession getDaoSession() {
        return mDaoSession;
    }

    public SQLiteDatabase getDb() {
        return db;
    }


}
